//
// Created by ziya on 2023/11/29.
//

#include "../include/unistd.h"

/**
 * 调用参数的寄存器：

RDI：用于传递第一个参数。
RSI：用于传递第二个参数。
RDX：用于传递第三个参数。
R10：用于传递第四个参数（注意，这并不是RDX，因为RDX在syscall指令执行时被用于其他目的）。
R8：用于传递第五个参数。
R9：用于传递第六个参数。

 * @param fildes
 * @param buf
 * @param count
 * @return
 */
long write(int fildes, const char *buf, int count) {
    long syscall_return;
    asm volatile (
            "syscall"
            : "=a" (syscall_return)
            : "a" (0), "D" (fildes), "S" (buf), "d" (count)
            : "rcx", "r11", "memory"
            );
    return syscall_return;
}
